package java学习.第11章_常用类和基础API;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;


public class E1_JDK8前时间API {

    @Test
    public void System时间() {
        //获取当前时间对应的毫秒数   long类型  时间戳
        //从1970年1月1日 到现在的毫秒数  常用来计算时间差
        System.out.println(System.currentTimeMillis());
        //只能用来计算时间差  纳秒 没有起止时间  且时间不是连续的
        System.out.println(System.nanoTime());
    }

    /**
     * java.util.Date
     * java.sql.Date // java.util.Date 的 子类
     */
    @Test
    public void Data类() {
        System.out.println("------------java.util.Date-----------------------");
        //this(System.currentTimeMillis()); 默认
        java.util.Date ud = new java.util.Date();
        System.out.println(ud);
        System.out.println(ud.getTime());//获取毫秒数
        System.out.println(ud.toString());
        //早已淘汰
        java.util.Date ud1 = new java.util.Date(5, 6, 3);
        System.out.println(ud1);//Mon Jul 03 00:00:00 CST 1905
        System.out.println("------------java.sql.Date-----------------------");
        //java.util.Date() 的子类  对应数据库的 Date
        java.sql.Date sd = new java.sql.Date(ud.getTime());
        //包含了时分秒  但是没展示
        System.out.println(sd);//2023-03-25

    }



    @Test
    public void SimpleDateFormatDemo() {
        //格式化时间默认格式：21-8-17 上午10:47
        //我的 默认  2023/3/25 上午9:57
//        SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//格式化时间指定格式

        //创建一个当前电脑的时间的对象
        java.util.Date date = new java.util.Date();
//        System.out.println(date.toString());
        String format = sdf.format(date);//格式化
        System.out.println(format);
        System.out.println("-------------------------------");

        String str = "2015-05-25";
//        str="21-8-17 上午10:44";
        str = "2021-8-17 10:44:55";
        java.util.Date date1;
        try {
            //格式必须是和SimpleDateFormat要求格式一模一样
            date1 = sdf.parse(str);
            System.out.println(date1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void Calendar日历类() {
        /**
         * jdk8之前
         * 日历类 Calendar abstract抽象类不可实例化
         *
         */
        //创建子类对象
        Calendar calendar=Calendar.getInstance();

        //class java.util.GregorianCalendar  //Calendar的子类
        System.out.println(calendar.getClass());

        System.out.println("这个月的第：" + calendar.get(Calendar.DAY_OF_MONTH) + "天");

        calendar.set(Calendar.DAY_OF_MONTH,22);//修改calendar这个对象

        calendar.add(Calendar.DAY_OF_MONTH,3);//增加  负数减少


        //日历类-->java.util.Date
        java.util.Date time = calendar.getTime();
        Calendar calendar2=Calendar.getInstance();
        System.out.println(calendar2.get(Calendar.YEAR));//获得当前年份
        System.out.println(calendar2.get(Calendar.MONTH));//获得当前月份
        System.out.println(calendar2.get(Calendar.DAY_OF_MONTH));//获得当前日份
        System.out.println(calendar2.get(Calendar.HOUR));//获得当前小时

        calendar.setTime(time);//java.util.Date-->日历类
    }//jdk8之前

}
